/*
Date:20210522 17:11PM
key:经典递归定义结构，只有右子树有也要c(a()(b)),左子树用()表示。
 */
 string kuo(TreeNode* root)
 {
     string s;
     if(root==nullptr)
     {
         s="";
         return s;
     }
     else
     {
         if(root->left==nullptr&&root->right==nullptr)
         {
            s=to_string(root->val);
            return s;
         }
         if(root->left!=nullptr&&root->right==nullptr)
         {
            s=to_string(root->val)+'('+kuo(root->left)+')';
            return s;
         }
         if(root->left==nullptr&&root->right!=nullptr)
         {
            s=to_string(root->val)+'('+')'+'('+kuo(root->right)+')';
            return s;
         }
         else
         {
             s=to_string(root->val)+'('+kuo(root->left)+')'+'('+kuo(root->right)+')';
         }
         
         return s;
     }
 }
class Solution {
public:
    string tree2str(TreeNode* root) 
    {
       return kuo(root);

    }
};